Passed
Pull Request — master (#75)
by Mathieu
01:46
created

AbstractProjectAndTaskGetter   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 26
dl 0
loc 31
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A getProject 0 12 3
A getTask 0 12 3
1
import {Task} from 'src/Domain/Task/Task.entity';
2
import {Project} from 'src/Domain/Project/Project.entity';
3
import {ITaskRepository} from 'src/Domain/Task/Repository/ITaskRepository';
4
import {IProjectRepository} from 'src/Domain/Project/Repository/IProjectRepository';
5
import {TaskNotFoundException} from 'src/Domain/Task/Exception/TaskNotFoundException';
6
import {ProjectNotFoundException} from 'src/Domain/Project/Exception/ProjectNotFoundException';
7
8
export abstract class AbstractProjectAndTaskGetter {
9
  constructor(
10
    private readonly taskRepository: ITaskRepository,
11
    private readonly projectRepository: IProjectRepository
12
  ) {}
13
14
  protected async getTask(taskId?: string): Promise<Task | null> {
15
    if (!taskId) {
16
      return null;
17
    }
18
19
    const task = await this.taskRepository.findOneById(taskId);
20
    if (!task) {
21
      throw new TaskNotFoundException();
22
    }
23
24
    return task;
25
  }
26
27
  protected async getProject(projectId?: string): Promise<Project | null> {
28
    if (!projectId) {
29
      return null;
30
    }
31
32
    const project = await this.projectRepository.findOneById(projectId);
33
    if (!project) {
34
      throw new ProjectNotFoundException();
35
    }
36
37
    return project;
38
  }
39
}
40